package boole.port;

import boole.circuit._PortOwner;
import boole.port.exception.PortAlreadyConnectedException;

/**
 *
 * @author Rémi PIOTAIX <remi.piotaix@gmail.com>
 * @author Thomas Nds nds.thomas@gmail.com
 */
public class PortEntreeSortie extends PortSortie implements _PortEntreeSortie {

    private _PortSortie portSortie = null;

    @Override
    public _PortSortie getPortSortie() {
        return portSortie;
    }

    /**
     * Demander une valeur a un portentreesortie revient a demander la valeur du
     * port de sortie sur lequel il est connecté
     *
     * @return La valeur du port
     */
    @Override
    public boolean getValeur() {
        return this.getPortSortie().getValeur();
    }

    public PortEntreeSortie(_PortOwner owner) {
        super(owner);
    }

    @Override
    public void connect(_PortSortie sortie) {
        if (this.portSortie != null) {
            throw new PortAlreadyConnectedException();
        }
        this.portSortie = sortie;
    }
    
/**
 * Redefinition:
 * isValid vérifie qu'un portentreSorties est connecté à une entrée et une sortie.
 * @return: vrai si connecté à une entrée et une sortie, faux sinon.
 */
        public boolean isValid() {
            return super.isValid() && portSortie != null; 
    }
}
